/**
 * 将数据存储到本地localStorage中的功能进行单独封装
 */
//1.0进行数据的存储
export const key = "shops";//定义一个key名

export let objShop = {"shopId":0,"shopCont":0};//let是es6中定义常量用的

export function setData(value){
    //存储之前要先获取原来的值，进行追加操作。
    let data = localStorage.getItem(key) || "[]";//为了防止没有购买,内存中没有值，所以这里要或上一个空数组形式的字符串。
    let arr = JSON.parse(data);//JSON.parse方法转换之后是一个json格式的数组。
    arr.push(value);
    localStorage.setItem(key,JSON.stringify(arr));//将新的json字符串格式的数组保存起来。
};

//2.0进行数据的获取
export function getData(){
    let jsonString = localStorage.getItem(key) || "[]";//这里为了防止没有购买,内存中没有值，所以这里要或上一个空数组形式的字符串。
    return JSON.parse(jsonString);//将获取到的json字符串格式的数据转换成json格式的数据返回，方便在购买页进行使用。
};

//3.0进行本地数据的移除
export function removeData(id){//这里的id指将来在商品购物页面传入的id
    let arr = getData();
    for(var i = arr.length-1;i >= 0;i--){
        if(arr[i].shopId == id){//如果本地存储中的商品id和传进来的id相同，就将这条数据删除
            arr.splice(i,1);
        };
    };
    //同时将删除完成后的数据在保存到本地。
    localStorage.setItem(key,JSON.stringify(arr));//将新的json字符串格式的数组保存起来,这里的key则是上边页面中定义好的key
};

//4.0在购买商品详情页进行数据获取
export function getLocaData(){
    let jsonData = getData(),
        jsonObj = {};
    for(var i = 0;i< jsonData.length;i++){
        let item = jsonData[i];
        if(!jsonObj[item.shopId]){ //如果这个对象中没有值，则将遍历出来的商品id当做键，数量当做值存进去
            jsonObj[item.shopId] = item.shopCont;
        }else {//如果有这个id则将其中的值和遍历出来的值进行相加,并重新赋值给jsonData.
            let val = jsonObj[item.shopId];
            jsonObj[item.shopId] = val + item.shopCont;
        };
    };
    return jsonObj;
}

//5.0在商品购买信息通过子组件返回的数据对本地local中的数据进行更新操作
export function upData(obj){//这里的obj就是将来子组件返回的那个带有加减状态的obj
    let count = 1;
    let arrJson = getData();//先获取到本地的数据(是一个数组形式的json数据)
    if(obj.type == "add"){//如果obj中的type类型为add，表明传回来的数据是要进行加法操作
        arrJson.push({"shopId":obj.shopId,"shopCont":count});
        //当进行完相关的增加操作后再将数据保存到本地localStorage中进行存储。
        localStorage.setItem(key,JSON.stringify(arrJson));//将新的json字符串格式的数组保存起来。
    }else {//否则进行减法操作
        for(var i = 0; i<arrJson.length; i++){//减法需要对整个数组进行遍历
            if(obj.shopId == arrJson[i].shopId){//如果返回的对象中的id和本地存储中的数据的id相等再进行相关操作
                if(arrJson[i].shopCont > 1){//如果本地存储中的商品数量大于1，就进行相减
                    arrJson[i].shopCont = arrJson[i].shopCont-1;
                    break;
                }else {//否则的话证明数据中只有一条数据，那就删除整个对象。
                    arrJson.splice(i,1);
                    break;
                };
            };
        };
        //当进行完相关的减少操作后再将数据保存到本地localStorage中进行存储。
        localStorage.setItem(key,JSON.stringify(arrJson));//将新的json字符串格式的数组保存起来。
    };
}
